<!--
 * @Descripttion : 
 * @Autor        : Lilong
 * @Date         : 2022-09-07 16:03:53
 * @LastEditTime : 2022-09-07 17:27:26
 * @FilePath     : \组件\提供&注入(依赖注入)\注入默认值\组合式API写法\todo-list-statics.vue
-->
<template>
    <div>我是todo-list-statistics组件：{{ localUser }}</div>
    <div>{{ localName }}</div>
  </template>
  
  <script>
  import { defineComponent, inject } from "vue";
  
  export default defineComponent({
      name: 'TodoListStatistics',
      created() {
          console.log(`注入的属性为：${this.localUser}`)
      },
      setup() {
        const localUser = inject('user');

        //如果组件组件没有提供name，第二个参数就是默认值
        const localName = inject('name', 'liling')

        //在一些场景中，默认值可能需要通过调用一个函数或初始化一个类来取得。为了避免在用不到默认值的情况下进行不必要的计算或产生副作用，我们可以使用工厂函数来创建默认值
        const value = inject('key', () => new ExpensiveClass())

        return {
            localUser,
            localName,
            value
        }
      }
  })
  </script>